//
//  customObjTransformHTTPRESTObjDelegate.h
//  etionCBLogic
//
//  Created by wjxfhxy on 14-2-21.
//  Copyright (c) 2014年 GuangZhouXuanWu. All rights reserved.
//

#import <Foundation/Foundation.h>

//@protocol CustomObjTransformHTTPRESTObjDelegate <NSObject>
//
//+(NSDictionary*)customObjToDictionary:(NSObject*)customObj;
//
//+(NSObject*)dictionaryToCustomObj:(NSDictionary*)dic;
//
//@end

@protocol XLGJSONOjectMapDelegate <NSObject>

+ (XMSQueueDictionary *)JSONObjectProperty:(NSArray *)JSONKeys;

@end

@interface CTransformHTTPRESTObj : NSObject

//+(NSObject*)JSONObj:(NSDictionary*)JSONObj transformToProtocolObj:(Class)cls;
//
//+(NSDictionary*)JSONObjFromProtocolObj:(NSObject*)protocolObj;
//
//+(NSObject*)JSONObj:(NSDictionary*)JSONObj transformToCustomObj:(NSObject*)customObj;
//
//+(NSDictionary*)JSONObjFromCustomObj:(NSObject*)customObj;

/**
 *  把JSON字典数组转换为具体的对象数组
 *
 *  @param JSONObjs JSON字典数组
 *  @param cls      具体对象
 *  @param qdSet    注册的字典key到具体对象的属性的装换关系
 *
 *  @return 具体的对象数组
 */
+(NSArray*)JSONObjs:(NSArray*)JSONObjs transformToProtocolObj:(Class)cls accordingToColPropertyPair:(XMSQueueDictionary *)qdSet;

/**
 *  把JSON字典数组转换为具体的对象数组
 *
 *  @param JSONObjs    JSON字典数组
 *  @param cls         具体对象
 *  @param qdSet       注册的字典key到具体对象的属性的装换关系
 *  @param complexType 复合类型处理，如array,dictionary
 *
 *  @return 具体的对象数组
 */
+(NSArray*)JSONObjs:(NSArray*)JSONObjs transformToProtocolObj:(Class)cls accordingToColPropertyPair:(XMSQueueDictionary *)qdSet complexType:(id(^)(NSString *key,ENSObjectPropertyType propertyType,id complexType))complexType;

/**
 *  注册JSON对象到具体对象的转换关系
 *
 *  @param key    标记
 *  @param cls    具体对象
 *  @param qdPair 关系
 */
+ (void)registerTransformObjKey:(NSString *)key Cls:(Class)cls transformPropertyPair:(XMSQueueDictionary *)qdPair;

+ (XMSQueueDictionary*)registerJSONObjectClass:(Class)cls JSONKeyPair:(XMSQueueDictionary *)qdPair;

/**
 *  获取JSON对象转换关系
 *
 *  @param key   标记
 *  @param arCol 需要获取的关系
 *
 *  @return 返回关系对
 */
+ (XMSQueueDictionary *)getTransformPropertyPair:(NSString *)key transformJSONKey:(NSArray *)JSONKeys;

+ (XMSQueueDictionary *)JSONObjectMap:(XMSQueueDictionary*)qdMap propertyWithJSONKey:(NSArray *)JSONKeys;

@end
